package com.fowo.api.model.batch.flow;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 批次流水 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class BatchFlowImportPo {

  /** 操作时间 */
  @ExcelProperty("操作时间")
  @DateTimeString(message = "操作时间不是有效的时间日期格式")
  private String operationTime;

  /** 类型 */
  @ExcelProperty("类型")
  private String type;

  /** 批次号 */
  @ExcelProperty("批次号")
  @Size(max = 50, message = "批次号长度不能超过50")
  private String batchNumber;

  /** 品名 */
  @ExcelProperty("品名")
  @Size(max = 500, message = "品名长度不能超过500")
  private String tradeNameName;

  @ExcelIgnore
  @Schema(title = "品名")
  private String tradeName;

  /** SKU */
  @ExcelProperty("SKU")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** 店铺 */
  @ExcelProperty("店铺")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String shopShopName;

  @ExcelIgnore
  @Schema(title = "店铺")
  private String shop;

  /** MSKU */
  @ExcelProperty("MSKU")
  @Size(max = 50, message = "MSKU长度不能超过50")
  private String msku;

  /** FNSKU */
  @ExcelProperty("FNSKU")
  @Size(max = 50, message = "FNSKU长度不能超过50")
  private String fnsku;

  /** 仓库 */
  @ExcelProperty("仓库")
  @Size(max = 50, message = "仓库长度不能超过50")
  private String warehouseName;

  @ExcelIgnore
  @Schema(title = "仓库")
  private String warehouse;

  /** 单据号 */
  @ExcelProperty("单据号")
  @Size(max = 50, message = "单据号长度不能超过50")
  private String documentNumber;

  /** 源头批次号 */
  @ExcelProperty("源头批次号")
  @Size(max = 50, message = "源头批次号长度不能超过50")
  private String sourceBatchNumber;

  /** 源头单据号 */
  @ExcelProperty("源头单据号")
  @Size(max = 50, message = "源头单据号长度不能超过50")
  private String sourceDocumentNumber;

  /** 在途结存 */
  @ExcelProperty("在途结存")
  @IntegerString(
    message = "在途结存数值格式不正确",
    label = "在途结存",
    min = 0
  )
  private String depositInTransit;

  /** 在库结存 */
  @ExcelProperty("在库结存")
  @IntegerString(
    message = "在库结存数值格式不正确",
    label = "在库结存",
    min = 0
  )
  private String balanceLibrary;

  /** 可用在途量 */
  @ExcelProperty("可用在途量")
  @IntegerString(
    message = "可用在途量数值格式不正确",
    label = "可用在途量",
    min = 0
  )
  private String availableInTransit;

  /** 次品在途量 */
  @ExcelProperty("次品在途量")
  @IntegerString(
    message = "次品在途量数值格式不正确",
    label = "次品在途量",
    min = 0
  )
  private String defectiveProducts;

  /** 待检量 */
  @ExcelProperty("待检量")
  @IntegerString(message = "待检量数值格式不正确", label = "待检量", min = 0)
  private String amountInspected;

  /** 可用量 */
  @ExcelProperty("可用量")
  @IntegerString(message = "可用量数值格式不正确", label = "可用量", min = 0)
  private String availableAmount;

  /** 次品量 */
  @ExcelProperty("次品量")
  @IntegerString(message = "次品量数值格式不正确", label = "次品量", min = 0)
  private String defectiveQuantity;

  /** 采购单价 */
  @ExcelProperty("采购单价")
  @DecimalString(message = "采购单价小数格式不正确", label = "采购单价")
  private String purchasePrice;

  /** 单位费用 */
  @ExcelProperty("单位费用")
  @DecimalString(message = "单位费用小数格式不正确", label = "单位费用")
  private String unitCosts;

  /** 单位头程 */
  @ExcelProperty("单位头程")
  @DecimalString(message = "单位头程小数格式不正确", label = "单位头程")
  private String unitHeadStroke;

  /** 单位库存成本 */
  @ExcelProperty("单位库存成本")
  @DecimalString(message = "单位库存成本小数格式不正确", label = "单位库存成本")
  private String unitInventoryCost;

  /** 货值 */
  @ExcelProperty("货值")
  @DecimalString(message = "货值小数格式不正确", label = "货值")
  private String goodsValue;

  /** 费用 */
  @ExcelProperty("费用")
  @DecimalString(message = "费用小数格式不正确", label = "费用")
  private String expenses;

  /** 头程 */
  @ExcelProperty("头程")
  @DecimalString(message = "头程小数格式不正确", label = "头程")
  private String headStroke;

  /** 库存成本 */
  @ExcelProperty("库存成本")
  @DecimalString(message = "库存成本小数格式不正确", label = "库存成本")
  private String inventoryCost;

  /** 采购计划 */
  @ExcelProperty("采购计划")
  @Size(max = 50, message = "采购计划长度不能超过50")
  private String procurementPlanning;

  /** 采购单 */
  @ExcelProperty("采购单")
  @Size(max = 50, message = "采购单长度不能超过50")
  private String purchaseOrder;

  /** 收货单 */
  @ExcelProperty("收货单")
  @Size(max = 50, message = "收货单长度不能超过50")
  private String goodsReceipt;

  /** 供应商 */
  @ExcelProperty("供应商")
  @Size(max = 50, message = "供应商长度不能超过50")
  private String vendor;

  /** 操作人 */
  @ExcelProperty("操作人")
  @Size(max = 50, message = "操作人长度不能超过50")
  private String operator;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remark;

  /** 更新时间 */
  @ExcelProperty("更新时间")
  @DateTimeString(message = "更新时间不是有效的时间日期格式")
  private String updateTime;
}
